// -*- mode: rust; -*-
//
// This file is part of curve25519-dalek.
// Copyright (c) 2016-2019 Isis Lovecruft, Henry de Valence
// See LICENSE for licensing information.
//
// Authors:
// - Isis Agora Lovecruft <isis@patternsinthevoid.net>
// - Henry de Valence <hdevalence@hdevalence.ca>

//! This module contains constants used by the AVX2 backend.

use packed_simd::u32x8;

use backend::vector::avx2::edwards::{CachedPoint, ExtendedPoint};
use backend::vector::avx2::field::FieldElement2625x4;
use window::NafLookupTable8;

/// The identity element as an `ExtendedPoint`.
pub(crate) static EXTENDEDPOINT_IDENTITY: ExtendedPoint = ExtendedPoint(FieldElement2625x4([
    u32x8::new(0, 1, 0, 0, 1, 0, 0, 0),
    u32x8::splat(0),
    u32x8::splat(0),
    u32x8::splat(0),
    u32x8::splat(0),
]));

/// The identity element as a `CachedPoint`.
pub(crate) static CACHEDPOINT_IDENTITY: CachedPoint = CachedPoint(FieldElement2625x4([
    u32x8::new(121647, 121666, 0, 0, 243332, 67108845, 0, 33554431),
    u32x8::new(67108864, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
]));

/// The low limbs of (2p, 2p, 2p, 2p), so that
/// ```ascii,no_run
/// (2p, 2p, 2p, 2p) = [P_TIMES_2_LO, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI]
/// ```
pub(crate) static P_TIMES_2_LO: u32x8 = u32x8::new(
    67108845 << 1,
    67108845 << 1,
    33554431 << 1,
    33554431 << 1,
    67108845 << 1,
    67108845 << 1,
    33554431 << 1,
    33554431 << 1,
);

/// The high limbs of (2p, 2p, 2p, 2p), so that
/// ```ascii,no_run
/// (2p, 2p, 2p, 2p) = [P_TIMES_2_LO, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI]
/// ```
pub(crate) static P_TIMES_2_HI: u32x8 = u32x8::new(
    67108863 << 1,
    67108863 << 1,
    33554431 << 1,
    33554431 << 1,
    67108863 << 1,
    67108863 << 1,
    33554431 << 1,
    33554431 << 1,
);

/// The low limbs of (16p, 16p, 16p, 16p), so that
/// ```ascii,no_run
/// (16p, 16p, 16p, 16p) = [P_TIMES_16_LO, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI]
/// ```
pub(crate) static P_TIMES_16_LO: u32x8 = u32x8::new(
    67108845 << 4,
    67108845 << 4,
    33554431 << 4,
    33554431 << 4,
    67108845 << 4,
    67108845 << 4,
    33554431 << 4,
    33554431 << 4,
);

/// The high limbs of (16p, 16p, 16p, 16p), so that
/// ```ascii,no_run
/// (16p, 16p, 16p, 16p) = [P_TIMES_16_LO, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI]
/// ```
pub(crate) static P_TIMES_16_HI: u32x8 = u32x8::new(
    67108863 << 4,
    67108863 << 4,
    33554431 << 4,
    33554431 << 4,
    67108863 << 4,
    67108863 << 4,
    33554431 << 4,
    33554431 << 4,
);

/// Odd multiples of the Ed25519 basepoint:
pub(crate) static BASEPOINT_ODD_LOOKUP_TABLE: NafLookupTable8<CachedPoint> = NafLookupTable8([
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            3571425,
            10045002,
            19036563,
            1096096,
            243332,
            65897020,
            0,
            28963681,
        ),
        u32x8::new(
            30896895,
            63055514,
            1614915,
            5095970,
            0,
            53791688,
            0,
            31258312,
        ),
        u32x8::new(
            13347627,
            40339464,
            2236269,
            11185503,
            0,
            22520087,
            0,
            8659512,
        ),
        u32x8::new(
            11125413,
            29139905,
            32037254,
            28360723,
            0,
            64556417,
            0,
            9635759,
        ),
        u32x8::new(
            33268144,
            47262491,
            4336918,
            15795740,
            0,
            22027545,
            0,
            4846528,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            47099681,
            31447946,
            29365447,
            24740513,
            42991046,
            18317844,
            16051644,
            21404226,
        ),
        u32x8::new(
            31708133,
            28909527,
            2366091,
            13703791,
            469246,
            54159622,
            2601402,
            32988002,
        ),
        u32x8::new(
            63432457,
            30251794,
            15163516,
            18491340,
            28144087,
            35605455,
            13682295,
            18474872,
        ),
        u32x8::new(
            12221607,
            4967598,
            26061980,
            26008006,
            20226147,
            9726961,
            17410,
            18051083,
        ),
        u32x8::new(
            60569645,
            62487085,
            11911242,
            21920922,
            4092105,
            38186967,
            22431483,
            31366585,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            18147205,
            62587998,
            2554617,
            536692,
            11924528,
            26674131,
            17645433,
            24341419,
        ),
        u32x8::new(
            11573357,
            27579485,
            31491870,
            29000885,
            10800976,
            51902791,
            28076395,
            20464029,
        ),
        u32x8::new(
            56031649,
            10856669,
            11791193,
            26769430,
            25306956,
            5922200,
            6630685,
            9385098,
        ),
        u32x8::new(
            31319348,
            23906711,
            16290213,
            32142166,
            61106354,
            17181823,
            3548308,
            12022566,
        ),
        u32x8::new(
            5904298,
            50218605,
            11826440,
            5492249,
            10379071,
            3472255,
            172742,
            31948344,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            10625852,
            15193821,
            22918394,
            23676410,
            53695416,
            54987793,
            10067515,
            11747680,
        ),
        u32x8::new(
            65013325,
            1309652,
            29616320,
            28922974,
            60360891,
            19621771,
            9938982,
            30406429,
        ),
        u32x8::new(
            54967954,
            65931918,
            5595602,
            25719523,
            64909864,
            30566415,
            15945272,
            8495317,
        ),
        u32x8::new(
            1167157,
            55265018,
            11507029,
            31641054,
            43497904,
            2367338,
            12937761,
            27517066,
        ),
        u32x8::new(
            656704,
            2544994,
            13006713,
            480979,
            38471594,
            62541240,
            25353597,
            11531760,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            22176662,
            3984313,
            27495285,
            4110608,
            2909584,
            30594106,
            15677919,
            2549183,
        ),
        u32x8::new(
            33979105,
            62269905,
            2071511,
            6894756,
            53189950,
            47232857,
            6408191,
            6123225,
        ),
        u32x8::new(
            32553873,
            63948030,
            12612401,
            3633166,
            24054373,
            37626618,
            14481327,
            8520484,
        ),
        u32x8::new(
            56552486,
            10749438,
            12034813,
            28811946,
            1445640,
            36755601,
            12104575,
            10257833,
        ),
        u32x8::new(
            22795808,
            48761311,
            1136056,
            9380768,
            1411523,
            5341811,
            27318329,
            9686767,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            21157200,
            39156966,
            20473176,
            4934657,
            61478183,
            45121537,
            5429856,
            13035023,
        ),
        u32x8::new(
            7954529,
            58789246,
            31440083,
            7054221,
            38438565,
            36856107,
            1364112,
            14548122,
        ),
        u32x8::new(
            26120083,
            36321360,
            4919997,
            31687496,
            33757765,
            36237559,
            15243054,
            32163861,
        ),
        u32x8::new(
            25878307,
            46544824,
            19455951,
            2414935,
            16844726,
            56521560,
            32680554,
            26660660,
        ),
        u32x8::new(
            48360220,
            43407178,
            12187042,
            24925816,
            7423722,
            25746484,
            12814654,
            17395963,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            63153652,
            32195955,
            4087908,
            8431689,
            30392384,
            47203165,
            8986649,
            9053039,
        ),
        u32x8::new(
            63659241,
            47988767,
            2931872,
            19953600,
            11747107,
            51610101,
            20952181,
            13364887,
        ),
        u32x8::new(
            3659197,
            58790649,
            5930099,
            2605312,
            28477896,
            580728,
            20579735,
            2610622,
        ),
        u32x8::new(
            41781607,
            17161358,
            10690531,
            24368015,
            47027031,
            36742339,
            5414694,
            13156365,
        ),
        u32x8::new(
            13237853,
            51182423,
            8954802,
            29006542,
            22643989,
            56896541,
            22830593,
            10289708,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            1401265,
            58846825,
            30911620,
            32239180,
            15391552,
            15200821,
            6339309,
            16403588,
        ),
        u32x8::new(
            55913797,
            29541724,
            1664461,
            21709410,
            38470488,
            47097092,
            17674945,
            32666066,
        ),
        u32x8::new(
            22844482,
            10797709,
            27548106,
            31638735,
            34500968,
            26611503,
            19727211,
            13160873,
        ),
        u32x8::new(
            31485204,
            14496164,
            13981208,
            10276888,
            5748808,
            35024436,
            2740987,
            7479021,
        ),
        u32x8::new(
            58541207,
            14866135,
            32344041,
            545930,
            62661488,
            6941250,
            27940205,
            11976112,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            39849808,
            44781685,
            15697329,
            24387845,
            12501486,
            50260092,
            23199481,
            31929024,
        ),
        u32x8::new(
            24823070,
            27956017,
            27034296,
            10316465,
            47664045,
            11152446,
            15719183,
            30181617,
        ),
        u32x8::new(
            20771189,
            19969144,
            31433937,
            19185213,
            27565920,
            10384445,
            2893359,
            9255362,
        ),
        u32x8::new(
            42894974,
            11925545,
            32134441,
            32738810,
            55916336,
            32479272,
            19563550,
            5511385,
        ),
        u32x8::new(
            17857161,
            47809169,
            14564114,
            27997751,
            33024640,
            38669671,
            31956536,
            27313245,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            58237774,
            15917425,
            18872208,
            19394230,
            17374297,
            6101419,
            4839741,
            6596900,
        ),
        u32x8::new(
            66947393,
            15744215,
            18368993,
            17750160,
            41006525,
            9205497,
            2629667,
            32170865,
        ),
        u32x8::new(
            66481381,
            1919414,
            28338762,
            7372967,
            33819153,
            4156199,
            27126309,
            12739816,
        ),
        u32x8::new(
            44117158,
            58545296,
            22521371,
            11809712,
            28998792,
            50731010,
            30215699,
            25748377,
        ),
        u32x8::new(
            23561284,
            4160244,
            9035405,
            24895184,
            39761639,
            59253416,
            8684759,
            22487864,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            12671134,
            56419053,
            16092401,
            30038207,
            4002647,
            47822606,
            7151311,
            28430768,
        ),
        u32x8::new(
            61041684,
            35765374,
            30598048,
            19666539,
            44150175,
            40140037,
            290469,
            28442674,
        ),
        u32x8::new(
            18847796,
            1371617,
            33316881,
            13199936,
            43646578,
            17068881,
            12074900,
            1537415,
        ),
        u32x8::new(
            10052225,
            38316070,
            27469797,
            5297537,
            50725570,
            20435349,
            10339121,
            2779737,
        ),
        u32x8::new(
            18372189,
            15466385,
            24762130,
            22217964,
            23503887,
            47844464,
            10415034,
            2606889,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            55082775,
            45300503,
            16032654,
            5964396,
            17743504,
            24634761,
            19493066,
            5184611,
        ),
        u32x8::new(
            50172633,
            35093294,
            10040575,
            23616256,
            4543900,
            61852191,
            4049821,
            7423669,
        ),
        u32x8::new(
            20295398,
            40009376,
            10487190,
            15670429,
            51972856,
            58649552,
            20436392,
            3432497,
        ),
        u32x8::new(
            35189420,
            54117751,
            12825868,
            6283038,
            27540739,
            30648758,
            22658912,
            9466689,
        ),
        u32x8::new(
            51737549,
            40725785,
            17409814,
            25201086,
            21156239,
            34176168,
            26814520,
            5956424,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            8211442,
            8014184,
            6260823,
            22108096,
            32182620,
            51844847,
            2466270,
            28582231,
        ),
        u32x8::new(
            27199739,
            3848333,
            31738017,
            10892045,
            4963982,
            65391770,
            32551997,
            28906469,
        ),
        u32x8::new(
            16606846,
            32207068,
            26404535,
            7614129,
            45416902,
            65584718,
            13821785,
            2646060,
        ),
        u32x8::new(
            36090634,
            57981287,
            32247670,
            22837502,
            31003861,
            55448117,
            6062915,
            20369975,
        ),
        u32x8::new(
            27381403,
            50578107,
            522631,
            29521058,
            31137497,
            40220737,
            27628049,
            1824195,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            59402443,
            17056879,
            29262689,
            6131785,
            52551472,
            43367471,
            29423199,
            18899208,
        ),
        u32x8::new(
            5749414,
            43514612,
            11365899,
            21514624,
            65591890,
            60945892,
            19841732,
            5628567,
        ),
        u32x8::new(
            19334369,
            52500268,
            12307673,
            5267367,
            3212103,
            9035822,
            29142161,
            30520954,
        ),
        u32x8::new(
            57261330,
            6819646,
            22089161,
            9800373,
            55155453,
            62250856,
            13766735,
            25244545,
        ),
        u32x8::new(
            54370226,
            61888301,
            24496089,
            2540581,
            65637506,
            60274355,
            18154273,
            11687259,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            12521903,
            26014045,
            13995625,
            33360175,
            23605474,
            7376434,
            27229267,
            17195036,
        ),
        u32x8::new(
            59482891,
            10074423,
            574357,
            3857753,
            61377787,
            50306685,
            5241065,
            20234396,
        ),
        u32x8::new(
            23674717,
            6997172,
            20771841,
            16858511,
            40565304,
            29973136,
            7049812,
            14585010,
        ),
        u32x8::new(
            1427477,
            13295732,
            31762066,
            31499740,
            60419925,
            54666164,
            22009424,
            8089609,
        ),
        u32x8::new(
            58154031,
            41593020,
            15342328,
            957047,
            38937260,
            37037498,
            24871992,
            32973409,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            30654745,
            51286025,
            21206982,
            2433562,
            12780105,
            31732574,
            33087964,
            33081189,
        ),
        u32x8::new(
            66640017,
            42720009,
            16567620,
            15300745,
            1530367,
            33001123,
            20930247,
            21042661,
        ),
        u32x8::new(
            15003356,
            5294119,
            22985605,
            18928772,
            32628461,
            18230172,
            14773298,
            27193722,
        ),
        u32x8::new(
            27555,
            65346287,
            17017174,
            7837720,
            21499787,
            42855613,
            22474984,
            13675085,
        ),
        u32x8::new(
            24164369,
            50130116,
            5973149,
            24152073,
            1577334,
            25400030,
            18648484,
            32228854,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            49518649,
            59119280,
            31670678,
            20396561,
            61728330,
            651402,
            176032,
            9529498,
        ),
        u32x8::new(
            61765532,
            9082232,
            32794568,
            15526956,
            48543100,
            32614212,
            19001206,
            25680229,
        ),
        u32x8::new(
            32086091,
            10373081,
            8996131,
            31822823,
            35788988,
            49973190,
            30542040,
            17858455,
        ),
        u32x8::new(
            48130197,
            58121889,
            27753291,
            29923268,
            54448075,
            43300790,
            9336565,
            15770022,
        ),
        u32x8::new(
            57725546,
            20557498,
            9366233,
            16023566,
            16189031,
            2837363,
            24315301,
            27003505,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            28286608,
            10767548,
            18220739,
            5413236,
            48253387,
            58255702,
            11864864,
            28527159,
        ),
        u32x8::new(
            45038176,
            58655197,
            25648758,
            10951484,
            42564382,
            34542843,
            23146954,
            22234334,
        ),
        u32x8::new(
            14858710,
            24978793,
            15040559,
            4379220,
            47621477,
            40271440,
            15650420,
            1998736,
        ),
        u32x8::new(
            24106391,
            9626149,
            344505,
            25253814,
            34579800,
            59687089,
            25718289,
            25904133,
        ),
        u32x8::new(
            1981195,
            37751302,
            26132048,
            1764722,
            13288231,
            28808622,
            12531301,
            18292949,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            13869851,
            31448904,
            14963539,
            7581293,
            20536485,
            35021083,
            21257574,
            33356609,
        ),
        u32x8::new(
            36903364,
            18429241,
            11097857,
            5943856,
            60583077,
            40015815,
            30509523,
            31915271,
        ),
        u32x8::new(
            49161801,
            40681915,
            67892,
            25454357,
            22779677,
            25798439,
            15964829,
            5863227,
        ),
        u32x8::new(
            60810637,
            4496471,
            5217137,
            14095116,
            50942411,
            50712663,
            2507380,
            26844507,
        ),
        u32x8::new(
            34579752,
            53519385,
            10859797,
            18816024,
            42552864,
            39478521,
            6783896,
            17277037,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            43287109,
            27900723,
            33182187,
            2766754,
            17041989,
            1018260,
            33392790,
            4830032,
        ),
        u32x8::new(
            60194178,
            30788903,
            24728888,
            14513195,
            20897010,
            28843233,
            20111980,
            17475240,
        ),
        u32x8::new(
            46042274,
            19257042,
            4628173,
            31649727,
            27388316,
            66631493,
            11541886,
            6408028,
        ),
        u32x8::new(
            57024680,
            49536568,
            32050358,
            31321917,
            17437691,
            49672356,
            2884755,
            20493991,
        ),
        u32x8::new(
            59553007,
            46782643,
            29001173,
            1814088,
            21930692,
            51319706,
            14965872,
            30748046,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            16441817,
            36111849,
            6900424,
            602234,
            46522199,
            16441484,
            8135070,
            21726541,
        ),
        u32x8::new(
            37711225,
            32701959,
            11679112,
            13125533,
            32154135,
            9407918,
            26554289,
            620848,
        ),
        u32x8::new(
            19233407,
            30086864,
            14679568,
            2797374,
            4892806,
            7993077,
            247658,
            5632804,
        ),
        u32x8::new(
            37427262,
            26675495,
            27125659,
            13496131,
            50718473,
            40115609,
            28505351,
            27837393,
        ),
        u32x8::new(
            196819,
            18410429,
            7070012,
            21691388,
            29763371,
            24754123,
            9727048,
            10930179,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            28319289,
            40734650,
            16225680,
            24739184,
            64272368,
            35356897,
            7866648,
            13635853,
        ),
        u32x8::new(
            34165295,
            48328447,
            27041670,
            23643655,
            48949950,
            52963288,
            30411133,
            6045174,
        ),
        u32x8::new(
            18583559,
            41649834,
            9813585,
            26098520,
            25682734,
            26733526,
            19276490,
            10654728,
        ),
        u32x8::new(
            34867476,
            52715968,
            5694571,
            13380978,
            15134994,
            1831255,
            8608001,
            17266401,
        ),
        u32x8::new(
            59925903,
            44282172,
            27802465,
            1855069,
            14234749,
            36635487,
            11302294,
            10938429,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            8373273,
            49064494,
            4932071,
            32997499,
            38472880,
            29335908,
            14504412,
            22460029,
        ),
        u32x8::new(
            31795930,
            50785923,
            25835990,
            25790073,
            65669841,
            11360450,
            9969157,
            9008164,
        ),
        u32x8::new(
            50262498,
            45869261,
            16124434,
            15336007,
            882762,
            42522623,
            11277198,
            26296377,
        ),
        u32x8::new(
            42332732,
            59129236,
            14452816,
            567985,
            208061,
            34722729,
            32008143,
            14828749,
        ),
        u32x8::new(
            17937794,
            36846032,
            32102665,
            4442466,
            19745435,
            31633451,
            7146411,
            15812027,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            30741269,
            38648744,
            12562645,
            30092623,
            25073992,
            28730659,
            27911745,
            30000958,
        ),
        u32x8::new(
            2859794,
            25991700,
            17776078,
            27091930,
            2328322,
            60061146,
            18581824,
            18039008,
        ),
        u32x8::new(
            58206333,
            17917354,
            1972306,
            11853766,
            2655376,
            60543390,
            18416710,
            13287440,
        ),
        u32x8::new(
            62746330,
            61423885,
            21246577,
            2266675,
            60099139,
            14804707,
            14772234,
            20679434,
        ),
        u32x8::new(
            26987698,
            15488817,
            715616,
            2339565,
            51980752,
            17333865,
            21965103,
            10839820,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            18672548,
            57660959,
            16042910,
            19519287,
            62865851,
            17580961,
            26628347,
            23774759,
        ),
        u32x8::new(
            368070,
            3464471,
            25888304,
            30370559,
            52396053,
            45426828,
            28745251,
            9246829,
        ),
        u32x8::new(
            29090099,
            57950037,
            23104657,
            4903923,
            10987778,
            56163684,
            23621539,
            10332760,
        ),
        u32x8::new(
            53338235,
            44851161,
            21606845,
            31069622,
            4243630,
            34464392,
            11286454,
            5802022,
        ),
        u32x8::new(
            46710757,
            63389067,
            11642865,
            1980986,
            12967337,
            28162061,
            3854192,
            30432268,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            12179834,
            41005450,
            12809619,
            33525228,
            4624405,
            46957889,
            16968743,
            11827816,
        ),
        u32x8::new(
            51521162,
            12466775,
            31791271,
            15303651,
            49798465,
            62714504,
            6509600,
            12918560,
        ),
        u32x8::new(
            20445559,
            1756449,
            28848701,
            7920171,
            9835040,
            5900071,
            28757409,
            12376688,
        ),
        u32x8::new(
            18259496,
            14281012,
            21767026,
            10232236,
            20000226,
            12400540,
            4104902,
            23570543,
        ),
        u32x8::new(
            3687440,
            26546648,
            13328821,
            26841081,
            49822734,
            22334054,
            244496,
            24862543,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            59523541,
            62195428,
            3853227,
            13954801,
            12387708,
            47627615,
            27221350,
            17899572,
        ),
        u32x8::new(
            63193587,
            36343307,
            14595132,
            6880795,
            1364792,
            37648434,
            3259017,
            20536046,
        ),
        u32x8::new(
            30362834,
            10440372,
            9574624,
            11729232,
            63861613,
            21748389,
            5530846,
            2721586,
        ),
        u32x8::new(
            18339760,
            1550632,
            17170271,
            25732971,
            28459263,
            63142237,
            21642345,
            31557672,
        ),
        u32x8::new(
            10611282,
            5204623,
            18049257,
            214175,
            19432723,
            49809070,
            26010406,
            27449522,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            19770733,
            26478685,
            9464541,
            29158041,
            28604307,
            45196604,
            7586524,
            6641859,
        ),
        u32x8::new(
            65654484,
            52230498,
            30886612,
            19112823,
            47271809,
            38942611,
            16020035,
            10773481,
        ),
        u32x8::new(
            27464323,
            54451016,
            20646645,
            17732915,
            23008717,
            53626684,
            3253189,
            15614410,
        ),
        u32x8::new(
            52381752,
            40693008,
            7063024,
            28469981,
            51159478,
            44543211,
            19941777,
            5985451,
        ),
        u32x8::new(
            13553668,
            35524849,
            14788737,
            1883845,
            12385775,
            47958835,
            29135466,
            1776722,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            36719806,
            20827965,
            23175373,
            32996806,
            42041892,
            65708790,
            5467143,
            20884008,
        ),
        u32x8::new(
            43256281,
            40770646,
            17244063,
            31959819,
            64366384,
            43544617,
            25057754,
            12628720,
        ),
        u32x8::new(
            17337782,
            58472057,
            27906934,
            15305274,
            30292418,
            39284317,
            16946773,
            24806712,
        ),
        u32x8::new(
            6485126,
            32447403,
            16261486,
            13561940,
            49439635,
            10738368,
            16419889,
            8897231,
        ),
        u32x8::new(
            44812203,
            40122262,
            25496058,
            2759794,
            25295304,
            52178368,
            24154195,
            29334408,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            42307254,
            57217102,
            1088936,
            3832827,
            33905401,
            23130334,
            6958056,
            12622851,
        ),
        u32x8::new(
            3881189,
            14870059,
            19712830,
            6071598,
            38147944,
            60776394,
            3427938,
            13765703,
        ),
        u32x8::new(
            7666911,
            24227591,
            17077136,
            22967588,
            6874639,
            30915523,
            11451695,
            24292224,
        ),
        u32x8::new(
            13659529,
            31984463,
            28764736,
            20506164,
            64729627,
            49321636,
            28284636,
            25472371,
        ),
        u32x8::new(
            39360308,
            42281399,
            9446504,
            868960,
            49227724,
            21351115,
            30561851,
            11292096,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            7071115,
            46444090,
            5387916,
            15432877,
            27226682,
            41506862,
            2398278,
            3978240,
        ),
        u32x8::new(
            51009614,
            54216973,
            24368938,
            31392616,
            38456150,
            62313644,
            6729154,
            99724,
        ),
        u32x8::new(
            17474332,
            62857913,
            2619930,
            30659308,
            18268181,
            32809239,
            22826292,
            24561895,
        ),
        u32x8::new(
            38187020,
            67003092,
            14118280,
            16500577,
            18808560,
            64983716,
            25712929,
            32518261,
        ),
        u32x8::new(
            25735813,
            62284262,
            10824872,
            20558596,
            48149681,
            31162667,
            22608274,
            26285185,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            963440,
            63742255,
            10230323,
            25515008,
            32506414,
            6105697,
            25980317,
            24645129,
        ),
        u32x8::new(
            7162189,
            8101249,
            14679265,
            33443386,
            2002396,
            8541405,
            19442276,
            4795881,
        ),
        u32x8::new(
            8116694,
            51463069,
            4415528,
            25599140,
            55805721,
            39582709,
            6719436,
            30033839,
        ),
        u32x8::new(
            14468202,
            42181869,
            25188826,
            9639755,
            47546189,
            62711146,
            32762447,
            18338064,
        ),
        u32x8::new(
            33880058,
            32810909,
            8969931,
            13095238,
            38360605,
            40138517,
            9246134,
            4928058,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            63655588,
            17883670,
            9410246,
            26162761,
            5000571,
            7349225,
            23785252,
            32751089,
        ),
        u32x8::new(
            28568737,
            10733123,
            9342397,
            21570673,
            54096560,
            32467591,
            20494687,
            21511513,
        ),
        u32x8::new(
            47675157,
            47932807,
            29250946,
            15672208,
            59760469,
            9945465,
            14939287,
            18437405,
        ),
        u32x8::new(
            37985267,
            8609815,
            31573002,
            3373596,
            47828883,
            20834216,
            13248616,
            24154292,
        ),
        u32x8::new(
            5543543,
            29553242,
            3386453,
            30501150,
            25058089,
            15236571,
            8814395,
            32462955,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            39158670,
            15322548,
            20495103,
            3312736,
            14557171,
            12985179,
            8044741,
            3176899,
        ),
        u32x8::new(
            24673290,
            29693310,
            21412266,
            18324699,
            2154518,
            40329021,
            17500543,
            3954277,
        ),
        u32x8::new(
            36758685,
            38738957,
            165513,
            14691866,
            3070475,
            10424235,
            17096536,
            16896898,
        ),
        u32x8::new(
            59790459,
            43094586,
            8720681,
            10423589,
            1122030,
            31545615,
            4463786,
            31811293,
        ),
        u32x8::new(
            49778992,
            60881044,
            20509974,
            5832494,
            64155961,
            31483358,
            4511231,
            20307815,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            2863373,
            40876242,
            26865913,
            24067353,
            15726407,
            40919070,
            12953902,
            9931535,
        ),
        u32x8::new(
            60934877,
            42512204,
            21649141,
            21945190,
            52211954,
            60984193,
            7046207,
            5363493,
        ),
        u32x8::new(
            4205971,
            64068464,
            18197273,
            7327176,
            51527794,
            21166920,
            20669933,
            11828242,
        ),
        u32x8::new(
            59782815,
            49617225,
            15379924,
            457923,
            9320508,
            21498914,
            3242540,
            31563182,
        ),
        u32x8::new(
            27714753,
            8664670,
            3366162,
            26338598,
            56775518,
            25796006,
            13129151,
            21388876,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            59276548,
            49972346,
            16795002,
            33455915,
            48430097,
            53857205,
            18627071,
            32474471,
        ),
        u32x8::new(
            42160315,
            50705892,
            13530540,
            28012698,
            19833221,
            55886870,
            20191784,
            9644313,
        ),
        u32x8::new(
            20372416,
            28414713,
            24084234,
            31804096,
            33815377,
            36131001,
            17251241,
            18291088,
        ),
        u32x8::new(
            56234667,
            14920441,
            2033267,
            29572003,
            1724043,
            45519699,
            17873735,
            501988,
        ),
        u32x8::new(
            50031659,
            31517850,
            15697583,
            1016845,
            43104661,
            54769582,
            8008601,
            27257051,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            52951491,
            66542164,
            14853573,
            30444631,
            12045973,
            24321813,
            16545674,
            18160646,
        ),
        u32x8::new(
            60107911,
            1126003,
            5947677,
            19486116,
            41119984,
            30860440,
            7935395,
            13354438,
        ),
        u32x8::new(
            17841328,
            11063269,
            1664538,
            26687568,
            6268968,
            22280371,
            17275484,
            4523163,
        ),
        u32x8::new(
            15886041,
            56799482,
            15446552,
            21712778,
            1005290,
            17827215,
            4978741,
            6854882,
        ),
        u32x8::new(
            34319277,
            47731002,
            20321804,
            28544575,
            29591814,
            63376351,
            24754545,
            26001714,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            66783087,
            5234346,
            46102,
            8566476,
            19947339,
            20180418,
            25398238,
            3726678,
        ),
        u32x8::new(
            63890180,
            46380965,
            20674069,
            5366544,
            59661487,
            48406612,
            31533614,
            7071217,
        ),
        u32x8::new(
            13104676,
            1406631,
            24326736,
            19854367,
            61039528,
            11019904,
            31967425,
            19219275,
        ),
        u32x8::new(
            39003597,
            30143957,
            15351834,
            8639435,
            57309582,
            61436794,
            15830475,
            10090318,
        ),
        u32x8::new(
            45923044,
            6700175,
            99413,
            21263025,
            23762647,
            53905481,
            6063914,
            10065424,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            42822326,
            57678669,
            4052879,
            25452667,
            54049411,
            2373092,
            22337016,
            7701046,
        ),
        u32x8::new(
            44382355,
            43307377,
            16761537,
            30373573,
            49790216,
            23230748,
            25655306,
            10519391,
        ),
        u32x8::new(
            919475,
            59371245,
            1273450,
            25558666,
            9724711,
            8556709,
            25755845,
            10887647,
        ),
        u32x8::new(
            25465699,
            44651158,
            17658392,
            11257418,
            29735193,
            22885150,
            7094716,
            26828565,
        ),
        u32x8::new(
            48237389,
            47661599,
            27054393,
            7328070,
            27280193,
            65616691,
            23062005,
            4170709,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            26535281,
            60238317,
            30343788,
            25790743,
            37993933,
            24614372,
            9523840,
            10401918,
        ),
        u32x8::new(
            2783987,
            29468958,
            4697011,
            19804475,
            37246678,
            46797720,
            10261254,
            18942252,
        ),
        u32x8::new(
            58135580,
            60247753,
            25301938,
            6844561,
            20949454,
            39844754,
            4552026,
            919057,
        ),
        u32x8::new(
            6694071,
            44126261,
            32285330,
            31370180,
            24603698,
            53328179,
            13971149,
            5325636,
        ),
        u32x8::new(
            64879487,
            582094,
            17982081,
            19190425,
            24951286,
            26923842,
            29077174,
            33286062,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            54863941,
            67016431,
            1224043,
            23371240,
            62940074,
            52101083,
            13523637,
            30366406,
        ),
        u32x8::new(
            36324581,
            25407485,
            18258623,
            4698602,
            50300544,
            2658516,
            26300935,
            2611030,
        ),
        u32x8::new(
            27183975,
            21791014,
            18105064,
            9875199,
            58118912,
            54198635,
            6400311,
            14767984,
        ),
        u32x8::new(
            33918318,
            42937962,
            14809334,
            22136592,
            10636588,
            29082337,
            29829692,
            28549776,
        ),
        u32x8::new(
            61080905,
            854212,
            12202487,
            20004503,
            9256495,
            6903981,
            20567109,
            347423,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            41391822,
            34336880,
            22362564,
            14247996,
            12115604,
            41583344,
            7639288,
            28910945,
        ),
        u32x8::new(
            62066617,
            59758859,
            26665947,
            11614812,
            65737664,
            45704543,
            30324810,
            12868376,
        ),
        u32x8::new(
            17491771,
            43589814,
            9454919,
            26047850,
            52629282,
            39304244,
            3868968,
            19296062,
        ),
        u32x8::new(
            17826638,
            30413590,
            32534225,
            32741469,
            15012391,
            14365713,
            33039233,
            14791399,
        ),
        u32x8::new(
            64115596,
            59197067,
            32739005,
            23275744,
            32954320,
            22241406,
            20788442,
            4942942,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            31956192,
            59570132,
            2784352,
            4237732,
            47222312,
            4860927,
            18658867,
            15279314,
        ),
        u32x8::new(
            63240583,
            28160478,
            23524941,
            13390861,
            66437406,
            57718120,
            33345312,
            28896298,
        ),
        u32x8::new(
            39026193,
            46239965,
            21440243,
            25070488,
            64012383,
            60999016,
            16517060,
            29565907,
        ),
        u32x8::new(
            18118181,
            60161496,
            4212092,
            23976240,
            36277753,
            62363144,
            5816868,
            16964362,
        ),
        u32x8::new(
            18196138,
            62490693,
            281468,
            7934713,
            56027312,
            62015725,
            4837237,
            32932252,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            29885826,
            51028067,
            30418143,
            33438769,
            62542283,
            39442528,
            31535876,
            143299,
        ),
        u32x8::new(
            17143063,
            56709783,
            14451852,
            15782104,
            32762665,
            14047066,
            26295037,
            5432487,
        ),
        u32x8::new(
            75151,
            533606,
            7539077,
            30926189,
            38410914,
            23771680,
            4872443,
            29199566,
        ),
        u32x8::new(
            61522396,
            48934708,
            16223126,
            207380,
            11171993,
            47975147,
            14164574,
            352966,
        ),
        u32x8::new(
            15449006,
            56530757,
            26796528,
            12045834,
            63738697,
            40667227,
            33001582,
            9101885,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            43331297,
            18431341,
            25801195,
            17267698,
            19365485,
            57295202,
            22218985,
            21284590,
        ),
        u32x8::new(
            2429849,
            19152559,
            10762172,
            22564684,
            21880390,
            66866426,
            20357935,
            22641906,
        ),
        u32x8::new(
            19771185,
            31652693,
            3666117,
            28136958,
            23624283,
            55101502,
            6313920,
            6783662,
        ),
        u32x8::new(
            3487137,
            7092443,
            11001876,
            26196524,
            47319246,
            44542068,
            17594073,
            15027760,
        ),
        u32x8::new(
            49563607,
            32191113,
            4991283,
            25400512,
            46539152,
            4155103,
            32368171,
            201203,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            20548943,
            14334571,
            4073874,
            6368588,
            53208883,
            56484515,
            15970071,
            25561889,
        ),
        u32x8::new(
            49915097,
            44030795,
            11202344,
            29284344,
            60258023,
            66225712,
            8075764,
            12383512,
        ),
        u32x8::new(
            45248912,
            4933668,
            9592153,
            5819559,
            31030983,
            38174071,
            32435814,
            7442522,
        ),
        u32x8::new(
            62688129,
            48218381,
            22089545,
            12897361,
            21050881,
            34278889,
            7569163,
            3225449,
        ),
        u32x8::new(
            19050183,
            51089071,
            32935757,
            22640195,
            66122318,
            47144608,
            18743677,
            25177079,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            41186817,
            46681702,
            31819867,
            32997133,
            38559207,
            27147015,
            30293819,
            16762988,
        ),
        u32x8::new(
            24154689,
            51762873,
            23883879,
            13510519,
            55338250,
            61224161,
            11663149,
            30803960,
        ),
        u32x8::new(
            18104238,
            14117824,
            11724021,
            21362053,
            65704761,
            35530242,
            13498058,
            33522849,
        ),
        u32x8::new(
            63812888,
            23995539,
            28920539,
            24005193,
            26412223,
            36582218,
            4251418,
            26160309,
        ),
        u32x8::new(
            16822053,
            66064082,
            3482145,
            31979593,
            45937188,
            54475379,
            612917,
            7976478,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            46509314,
            55327128,
            8944536,
            274914,
            26432930,
            53829300,
            21192572,
            3569894,
        ),
        u32x8::new(
            20919764,
            64356651,
            30642344,
            17215170,
            20335124,
            11203745,
            18663316,
            19024174,
        ),
        u32x8::new(
            59297055,
            53842463,
            3680204,
            9806710,
            54004169,
            51484914,
            29807998,
            20134199,
        ),
        u32x8::new(
            14781592,
            22628010,
            26877930,
            25880359,
            30434803,
            190607,
            30184292,
            8991040,
        ),
        u32x8::new(
            64400983,
            64591751,
            854562,
            28216111,
            20010398,
            50414793,
            9803872,
            22687008,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            15091184,
            32550863,
            8818643,
            4244752,
            43123513,
            64565526,
            408838,
            13206998,
        ),
        u32x8::new(
            16405061,
            60379639,
            31489017,
            20949281,
            27568751,
            38734986,
            8364264,
            12451020,
        ),
        u32x8::new(
            16005217,
            58008076,
            1406778,
            26546927,
            39571784,
            56365493,
            31274296,
            8918790,
        ),
        u32x8::new(
            23271122,
            19453469,
            27718201,
            32742670,
            234332,
            36785342,
            22601675,
            14331046,
        ),
        u32x8::new(
            40636025,
            22442705,
            22115403,
            23745859,
            41164945,
            61012,
            12499614,
            542137,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            62776018,
            32835413,
            17373246,
            17187309,
            54469193,
            21770290,
            15923753,
            28996575,
        ),
        u32x8::new(
            59385210,
            63082298,
            12568449,
            8509004,
            9483342,
            16105238,
            5756054,
            26890758,
        ),
        u32x8::new(
            53987996,
            38201748,
            5521661,
            19060159,
            18663191,
            9093637,
            27786835,
            31189196,
        ),
        u32x8::new(
            65872678,
            43635130,
            27903055,
            25020300,
            65772737,
            38110437,
            5213502,
            21909342,
        ),
        u32x8::new(
            4438979,
            9680838,
            10212446,
            4764184,
            13235684,
            58245995,
            20264570,
            21024049,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            60835961,
            48209103,
            31049052,
            4688268,
            12426713,
            59829045,
            22302488,
            29008521,
        ),
        u32x8::new(
            50401667,
            29716596,
            23531224,
            7581281,
            49071895,
            6952617,
            14934683,
            8218256,
        ),
        u32x8::new(
            1601446,
            36631413,
            31774811,
            29625330,
            56786114,
            8331539,
            23129509,
            19783344,
        ),
        u32x8::new(
            59514327,
            64513110,
            1772300,
            5701338,
            5737511,
            16147555,
            9461515,
            5703271,
        ),
        u32x8::new(
            33072974,
            54300426,
            11940114,
            1308663,
            15627555,
            4931627,
            28443714,
            20924342,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            18135013,
            20358426,
            4922557,
            10015355,
            65729669,
            34786528,
            26248549,
            29194359,
        ),
        u32x8::new(
            797666,
            34997544,
            24316856,
            25107230,
            24612576,
            4761401,
            15307321,
            32404252,
        ),
        u32x8::new(
            16501152,
            60565831,
            9487105,
            9316022,
            24986054,
            31917592,
            3962024,
            2501883,
        ),
        u32x8::new(
            63356796,
            50432342,
            18044926,
            30566881,
            42032028,
            31415202,
            13524600,
            16119907,
        ),
        u32x8::new(
            3927286,
            57022374,
            9265437,
            21620772,
            19481940,
            3806938,
            24836192,
            14572399,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            10785787,
            46564798,
            368445,
            33181384,
            5319843,
            52687136,
            30347110,
            29837357,
        ),
        u32x8::new(
            56436732,
            47859251,
            24141084,
            22250712,
            59046084,
            4963427,
            33463413,
            17168859,
        ),
        u32x8::new(
            15512044,
            6366740,
            4737504,
            27644548,
            30307977,
            25037929,
            14593903,
            12836490,
        ),
        u32x8::new(
            63878897,
            34013023,
            5860752,
            7244096,
            3689461,
            57012135,
            18389096,
            11589351,
        ),
        u32x8::new(
            4682110,
            36302830,
            653422,
            22316819,
            14081831,
            5657024,
            11088376,
            24110612,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            39907267,
            45940262,
            24887471,
            18342609,
            878445,
            40456159,
            12019082,
            345107,
        ),
        u32x8::new(
            12794982,
            28893944,
            9447505,
            11387200,
            16961963,
            13916996,
            10893728,
            25898006,
        ),
        u32x8::new(
            44934162,
            53465865,
            3583620,
            1102334,
            53917811,
            63478576,
            2426066,
            10389549,
        ),
        u32x8::new(
            45096036,
            37595344,
            19367718,
            20257175,
            10280866,
            41653449,
            27665642,
            375926,
        ),
        u32x8::new(
            45847901,
            24064074,
            32494820,
            32204556,
            10720704,
            51079060,
            1297436,
            29853825,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            66303987,
            36060363,
            16494578,
            24962147,
            11971403,
            49538586,
            25060560,
            1964341,
        ),
        u32x8::new(
            25988481,
            27641502,
            24909517,
            27237087,
            66646363,
            52777626,
            16360849,
            10459972,
        ),
        u32x8::new(
            43930529,
            34374176,
            31225968,
            8807030,
            10394758,
            35904854,
            25325589,
            19335583,
        ),
        u32x8::new(
            25094697,
            34380951,
            20051185,
            32287161,
            11739332,
            53887441,
            30517319,
            26601892,
        ),
        u32x8::new(
            8868546,
            35635502,
            32513071,
            28248087,
            51946989,
            14222744,
            19198839,
            23261841,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            51218008,
            5070126,
            11046681,
            5320810,
            61212079,
            34104447,
            23895089,
            6460727,
        ),
        u32x8::new(
            39843528,
            46278671,
            10426120,
            25624792,
            66658766,
            37140083,
            28933107,
            12969597,
        ),
        u32x8::new(
            59635793,
            40220191,
            5751421,
            173680,
            58321825,
            740337,
            1412847,
            7682623,
        ),
        u32x8::new(
            975962,
            56440763,
            20812276,
            22631115,
            49095824,
            19883130,
            2419746,
            31043648,
        ),
        u32x8::new(
            66208703,
            39669328,
            22525915,
            3748897,
            65994776,
            34533552,
            8126286,
            18326047,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            64176557,
            3912400,
            19351673,
            30068471,
            31190055,
            24221683,
            33142424,
            28698542,
        ),
        u32x8::new(
            34784792,
            4109933,
            3867193,
            19557314,
            2112512,
            32715890,
            24550117,
            16595976,
        ),
        u32x8::new(
            35542761,
            48024875,
            10925431,
            31526577,
            66577735,
            23189821,
            13375709,
            1735095,
        ),
        u32x8::new(
            59699254,
            43854093,
            29783239,
            24777271,
            19600372,
            39924461,
            2896720,
            1472185,
        ),
        u32x8::new(
            56389656,
            35980854,
            33172342,
            1370336,
            23707480,
            57654949,
            7850973,
            12655016,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            38372660,
            57101970,
            7044964,
            12732710,
            57535705,
            6043201,
            30858914,
            10946592,
        ),
        u32x8::new(
            21023468,
            6946992,
            26403324,
            23901823,
            35695559,
            23440687,
            4763891,
            6514074,
        ),
        u32x8::new(
            28662273,
            30933699,
            9352242,
            26354829,
            37402243,
            3145176,
            8770289,
            525937,
        ),
        u32x8::new(
            54933102,
            36695832,
            3281859,
            4755022,
            23043294,
            32794379,
            15618886,
            23602412,
        ),
        u32x8::new(
            9931565,
            29897140,
            2480737,
            24193701,
            7833615,
            2284939,
            893926,
            13421882,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            22917795,
            22088359,
            28978099,
            19794863,
            60542318,
            29878494,
            31053731,
            9080720,
        ),
        u32x8::new(
            23679072,
            52547035,
            28424916,
            20647332,
            4008761,
            28267029,
            12961289,
            1589095,
        ),
        u32x8::new(
            55616194,
            26678929,
            14998265,
            23274397,
            54625466,
            46244264,
            28627706,
            33030665,
        ),
        u32x8::new(
            11527330,
            6449415,
            26531607,
            3472938,
            41541592,
            62607682,
            19862690,
            20564723,
        ),
        u32x8::new(
            32843805,
            49066843,
            28425824,
            19521495,
            48792073,
            48242878,
            27392443,
            13175986,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            16185025,
            61537525,
            2961305,
            1492442,
            25123147,
            3095034,
            31896958,
            33089615,
        ),
        u32x8::new(
            64748157,
            18336595,
            16522231,
            25426312,
            65718949,
            35485695,
            30554083,
            10205918,
        ),
        u32x8::new(
            39626934,
            39271045,
            16420458,
            9826240,
            56483981,
            27128085,
            3783403,
            13360006,
        ),
        u32x8::new(
            30793778,
            66771960,
            17241420,
            6564573,
            61102581,
            29974476,
            32385512,
            9011754,
        ),
        u32x8::new(
            28068166,
            11862220,
            14323567,
            12380617,
            52090465,
            16029056,
            24495309,
            21409233,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            59411973,
            57437124,
            11695483,
            17586857,
            16108987,
            43449109,
            31098002,
            6248476,
        ),
        u32x8::new(
            42258047,
            61595931,
            29308533,
            11742653,
            43042345,
            27373650,
            30165249,
            21929989,
        ),
        u32x8::new(
            49907221,
            9620337,
            21888081,
            20981082,
            56288861,
            61562203,
            33223566,
            3582446,
        ),
        u32x8::new(
            57535017,
            41003416,
            22080416,
            14463796,
            65518565,
            18127889,
            24370863,
            33332664,
        ),
        u32x8::new(
            66655380,
            6430175,
            471782,
            11947673,
            30596400,
            18898659,
            15930721,
            4211851,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            6757410,
            65455566,
            13584784,
            11362173,
            10797127,
            24451471,
            19541370,
            29309435,
        ),
        u32x8::new(
            40360156,
            17685025,
            18326181,
            3846903,
            13693365,
            63049479,
            31900359,
            23385063,
        ),
        u32x8::new(
            52455038,
            57513503,
            22163311,
            27095042,
            48610726,
            66454160,
            12085341,
            26357004,
        ),
        u32x8::new(
            22097042,
            14063840,
            6705778,
            14342902,
            66139825,
            20702105,
            31279090,
            7495745,
        ),
        u32x8::new(
            27360710,
            49314837,
            18774847,
            7146436,
            37066216,
            42004961,
            22409916,
            10524446,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            1497507,
            33054449,
            11839906,
            2960428,
            40538463,
            18884538,
            25018820,
            4073970,
        ),
        u32x8::new(
            54484385,
            43640735,
            2808257,
            20710708,
            39840730,
            27222424,
            21783544,
            11848522,
        ),
        u32x8::new(
            45765237,
            48200555,
            9299019,
            9393151,
            34818188,
            56098995,
            13575233,
            21012731,
        ),
        u32x8::new(
            4265428,
            49627650,
            24960282,
            9425650,
            47883651,
            2797524,
            11853190,
            22877329,
        ),
        u32x8::new(
            25008173,
            64199503,
            380047,
            12107343,
            12329448,
            11914399,
            764281,
            29687002,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new(
            35889734,
            23047226,
            4022841,
            7017445,
            7274086,
            53316179,
            25100176,
            15310676,
        ),
        u32x8::new(
            42409427,
            30270106,
            6823853,
            31551384,
            40645017,
            66489807,
            18021817,
            32669351,
        ),
        u32x8::new(
            39827134,
            43680850,
            28297996,
            20258133,
            26058742,
            52643238,
            22238331,
            21690533,
        ),
        u32x8::new(
            60808002,
            17499995,
            30042246,
            29310584,
            48219954,
            29389518,
            8680514,
            17844709,
        ),
        u32x8::new(
            6452896,
            50116553,
            9532047,
            26821214,
            44524351,
            50428429,
            21904953,
            12608048,
        ),
    ])),
]);
